package com.leetcode.August;

import javax.swing.tree.TreeNode;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

/**
 * @Description: 530. 二叉搜索树的最小绝对差
 * @Author: Mr.Fxy
 * @CreateTime: 2024-08-27 14:39
 */
public class LC530二叉搜索树的最小绝对差 {
    //    TreeSet<Integer> s = new TreeSet<>();
//    public int getMinimumDifference(TreeNode root) {
//        if (root == null) return 0;
//        int min = Integer.MAX_VALUE;
//        dfs(root);
//        for (int i = 1; i < s.size(); i++) {
//            int temp = s.toArray(new Integer[0])[i] - s.toArray(new Integer[0])[i - 1];
//            min = Math.min(min, temp);
//        }
//        return min;
//    }
//    public void dfs(TreeNode root){
//        if (root == null) return;
//        dfs(root.left);
//        s.add(root.val);
//        dfs(root.right);
//    }
    TreeNode pre;
    int res = Integer.MAX_VALUE;
    public int getMinimumDifference(TreeNode root) {
        if(root == null) return 0;
        traversal(root);
        return res;
    }

    private void traversal(TreeNode root) {
        if(root == null) return;
        traversal(root.left);
        //二叉搜索树的中序遍历是递增的
        if (pre != null) res=Math.min(res,root.val-pre.val);
        pre = root;
        traversal(root.right);
    }
}
